package test;

public class Queue {
    //普通队列
    /*
    数组模拟队列 先入先出   数组长度为队列最大容量   当数组最后一个元素没有弹出时无法添加
    (队列没有到最大容量，即数组前面为空，数组在使用时最后一个元素存储了元素，无法继续添加，----假溢出
    解决----所有元素前移动 or ------将数组当成一个首位相连的环
    )

    */
    //头指针
    int headIndext=-1;
    //尾指针
    int tailIndext=-1;
    //数组---数组.length为队列容量
    String[] array;
    //当前队列长度
    int length=0;
    public Queue(int length){

        this.array=new String[length];
    }

    public void add(String i){

        length++;
        tailIndext++;
        //尾指针等于数组最后一个元素下标
        if(tailIndext==array.length){
            System.out.println("队列已满");
            throw new RuntimeException("队列已满");
        }
        array[tailIndext]=i;

    }
    public void delect(){
        //当前队列为空时还要删除元素时
        if(length==0){
            System.out.println("！！队列已空");
            throw new RuntimeException("队列已空");
        }
        length--;
        headIndext++;
        array[headIndext]=null;
        //当队列为空时---头尾指针归零
        if(headIndext==tailIndext){
            headIndext=-1;
            tailIndext=-1;
        }

    }
    public void query(){
        System.out.println("查看-------");
        for(String i:array){
            System.out.println(i);
        }

    }
    public int getLength(){
        return length;
    }

}
